%!TEX program = xelatex
\documentclass[lang=cn,11pt,numbers]{errata}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{bm}
\usepackage{makecell}

\title{视觉SLAM十四讲：从理论到实践（第二版） \\ 勘误表}
\author{高翔}
\date{\today}

\begin{document}
\maketitle
\section{勘误表说明}
由于能力所限，书籍内容难免有一些错误，我们对此表示抱歉。在这个文档里，我们列出自第一次印刷（2019年8月）后书中的错误。大多数错误应该会在下一次印刷中修复。所以，请读者留意扉页中的印刷次数，并对照本文档进行斟别。

对于代码的改动，请参照当前的github页面，勘误表仅针对书籍内容。本勘误表仅对第二版书籍有效，第一版书的勘误请参考第一版书对应的github页面。

由于排版可能在不同印刷次数中存在微小改动，勘误表中的页面和段落等标记，仅针对当前次印刷有效。

如果您认为书中内容存在错误，请给我发邮件，或者通过出版社提供的反馈通道发送信息。直接给我发邮件会比较方便。
\section{第一次印刷（2019年8月）}
\begin{table}[!htp]
	\centering
	\caption{第一次印刷勘误}
	\begin{tabular}{c|cccc}
		\hline\hline
		序号 & 位置 & 改动前 & 改动后 & 说明 \\\hline
		1 & 彩页1右上图标题 & 拓扑地 & 拓扑地图 & 美编加工时漏字 \\
		2 & 式3.41 & $
		\begin{aligned}
		\theta &= \arccos(\frac{\mathrm{tr}(\bm{R}-1)}{2}) \\
		&=\arccos(2s^2-1).
		\end{aligned}$ & $
		\begin{aligned}
		\theta &= \arccos(\frac{\mathrm{tr}(\bm{R})-1}{2}) \\
		&=\arccos(2s^2-1).
		\end{aligned}$ & $\mathrm{tr}$括号位置有误 \\
		3 & P188 终端输入 & d1.png d2.png & 1\_depth.png 2\_depth.png & 深度图文件名 \\
		4 & 参考文献61 & P3p(blog) $\ldots$ & 删除 & 网站已过期，网址不可访问 \\
		5 & P326 式(12.14) & $d_C {\bm{P}_C} = \ldots .$ & 删除最右侧$\bm{t}_{\mathrm{RW}}$前的$\bm{K}$ & 多一个$\bm{K}$ \\
		6 & P156 & 金字塔是计算图视觉中 & 计算机视觉中 & 错别字 \\
		\hline\hline
	\end{tabular}
\end{table}

\section{第三次印刷（2019年10月）}
\begin{table}[!htp]
	\centering
	\caption{第三次印刷勘误}
	\begin{tabular}{c|cccc}
		\hline\hline
		序号 & 位置 & 改动前 & 改动后 & 说明 \\\hline
		7 & P265 第10讲主要目标 & 第3条 & 删去 & 正文内未介绍IMU(计划但没有实装) \\
		\hline \hline
	\end{tabular}
\end{table}

\section{第四次印刷（2019年11月）}
\begin{table}[!htp]
	\centering
	\caption{第四次印刷勘误}
	\begin{tabular}{c|cccc}
		\hline\hline
		序号 & 位置 & 改动前 & 改动后 & 说明 \\\hline
		8 & P178  & 式(7.25)下方文字说明的前两句 & \makecell[c]{该式左侧为零，右侧可看成\\关于$s_1$的一个方程\\可以根据它直接求得$s_1$。\\有了$s_1$，$s_2$也非常容易求出} & 修改至正确的表述 \\
		\hline 
        9 & P127  & 这里$\bm{J}(\bm{x})^\mathrm{T}$为$F(\bm{x})$关于$\bm{x}$的导数 & 这里$\bm{J}(\bm{x})$为$F(\bm{x})$关于$\bm{x}$的导数 & 去掉转置符号 \\
        \hline \hline
	\end{tabular}
\end{table}

\section{未提交勘误}
以下是未提交至出版社的已知问题的勘误。
\begin{table}[!htp]
	\centering
	\caption{未提交勘误}
	\begin{tabular}{c|cccc}
		\hline\hline
		序号 & 位置 & 改动前 & 改动后 & 说明 \\\hline
		10 & P262  & 代码片段 & 删除 & 与前文重复，疑似版本问题 \\
		\hline 
		11 & P100  & （即该点到成像平面的深度） & 该点到相机光心的深度 & 用语更准确 \\ \hline
		12 & P100  & 脚注部分：如果往里弯，...如果外往弯 & 交换顺序，如果往外弯在前 & 描述不当 \\ \hline
		\hline \hline
	\end{tabular}
\end{table}

\section{一些不在勘误表内的改动}
除上述改动之外，还有一些不在书籍文本内的改动，需要向读者说明。大部分这里的勘误来自于github issues。它们在代码中已经被修复，但书里的文本会滞后于github的更新速度。

\begin{enumerate}
	\item 第4讲的examples/trajectorError例子中，构造SE3的部分四元数应该使用$w,x,y,z$顺序；
	\item 第7讲的orb\_self.cpp例子中，375行改为int idx\_pq = i * 32 + k;
    \item 第7讲的orb\_self.cpp例子中，360和361行的m01和m10应该交换位置；
	\item 第8讲的直接法实现，需要使用OpenCV 4支持的cv::parallel\_for\_函数。如果读者使用较旧的版本，需要对代码做一些改动。具体的改动方法请参照对应版本的OpenCV文档，或者参考~\url{https://github.com/gaoxiang12/slambook2/issues/32}。

\end{enumerate}

\end{document}
